<?php

$admin_access_ret = new Ret('admin/access.tpl', 'admin/access.css');

// Wenn was gemacht werden soll
{
	if (is_array($_POST) and count($_POST) > 0) {
		
		// Prüfen, welche Funktion verwendet werden soll
		if (isset($_POST['function'])) {
			
			// Funktion ermitteln
			if ($_POST['function'] === 'delete') {
				// Diese Funktion löscht alle selektierten Zugriffsrechte (Accessright)
				
				// Prüfen, ob Accesrights ausgewählt wurden
				if (isset($_POST['accessrightselection'])) {
					
					// Alle selektierten Rechte löschen
					foreach ($_POST['accessrightselection'] as $saccessright) {
						DAOFactory::getInstance('Accessright')->deleteById($saccessright);
					}
					
				} else {
					// Es wurden keine Zugriffsrechte selektiert
					$admin_access_ret->add_error(ERR_NO_RIGHT_SELECTED);
				}
				
			} else if ($_POST['function'] === 'create') {
				// Diese Funktion erzeugt für jedes gewählte Recht ein neues Accessright, wenn es dieses noch nicht gibt
				
				if (isset($_POST['rights'])) {
					
					$accessrightDAO = DAOFactory::getInstance('Accessright');
					
					// Über alle gewählten Rechte iterieren und für jedes ein Accessright anlegen
					foreach ($_POST['rights'] as $rightid) {
						$new_accessright = new Accessright($_POST['url'], $rightid);
						
						if (!$accessright = $accessrightDAO->exists($new_accessright)) {
							
							// Neweu Accessright speichern
							$accessrightDAO->save($new_accessright);
							$admin_access_ret->add_info('Accessright erzeugt: '.$_POST['url'] .' => '. DAOFactory::getInstance('Right')->getById($rightid)->get_name());
							
						} else {
							// Dieses Zugriffsrecht gibt es bereits
							$admin_access_ret->add_error('Accessright existiert bereits: '.$_POST['url'] .' => '. DAOFactory::getInstance('Right')->getById($rightid)->get_name());
						}
					}
					
				} else {
					// Es wurde kein Recht gewählt
					$admin_access_ret->add_error('Es wurde kein Recht für die URL gewählt');
				}
				
			} else {
				// Es wiurde keine valide Funktion angegeben
				$admin_access_ret->add_error(ERR_FUNCTION_NOT_DEFINED);
			}
			
		} else {
			// Es wurde keine Funktion definiert
			$admin_access_ret->add_error(ERR_NO_FUNCTION_DEFINED);
		}
		
	}
}

// Alle benötigten Daten bereitstellen
{
	// Alle Accessrights laden und der access.tpl zur verfügung stellen
	$admin_access_ret->add_data('accessrights', DAOFactory::getInstance('Accessright')->get_all());
	
	// Alle Rechte laden, um neue Accessrights definieren zu können
	$admin_access_ret->add_data('rights', DAOFactory::getInstance('Right')->get_all());
}

// benötigte snippets laden
{
	// Snippet zum erstellen eines neuen Rechtes
	$admin_access_ret->add_jquerysnippet('admin/access/create_new.js');
	
	// Snippet zu definition des "delete_selected_access"
	$admin_access_ret->add_jquerysnippet('admin/access/delete_selected.js');
	
	// Snippet zur definition des "select_all_access"
	$admin_access_ret->add_jquerysnippet('admin/access/select_all.js');
	
}

return $admin_access_ret;

?>